<?php

namespace Juheip\IpService;

use Juheip\IpService\console\SyncCommand;
use Juheip\IpService\middleware\PlatformsRequestLogMiddleware;
use think\Service;
use think\App;

class ServiceProvider extends Service
{
    public function register()
    {
        // 1. 注册扩展包配置（合并到框架配置中）
        // 加载扩展包默认配置，键名 'juheip_platforms_config' 对应配置文件内容
        $this->app->config->load(
            __DIR__ . '/../config/juheip_platforms_config.php',
            'juheip_platforms_config'
        );
        // 2. 注册自定义服务到容器（可选，如工具类、业务类）
        // 方式1：绑定单例（每次获取都是同一个实例）
        // $this->app->singleton('juheip.platforms', function (App $app) {
        //     $config = $app->config->get('juheip_platforms', []);

        //     return new JuheipService($config);
        // });

        // 方式2：绑定工厂模式(每次获取都是新实例)
        $this->app->bind('juheip.platforms', function (App $app) {
            $config = $app->config->get('juheip_platforms_config', []);

            return new JuheipService($config);
        });

        // 3. 注册本地路由
        $this->loadRoutesFrom(__DIR__ . '/route/juheip_platforms_route.php');
    }

    /**
     * 服务启动
     */
    public function boot()
    {
        // 注册命令
        if ($this->app->runningInConsole()) {
            $this->commands([
                SyncCommand::class
            ]);
        }

        // 注册中间件
        // $this->app->middleware->add(PlatformsRequestLogMiddleware::class);
    }
}